\documentclass[a4paper,12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[romanian]{babel}
\usepackage{romanian}
\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{caption}
\pagestyle{fancy}

\lhead{SDSL Plugin}
\rhead{Corcosa Ioana}
\rightmark
\renewcommand{\sectionmark}[1]{\markright{#1}{}}
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}


\begin{document}
%\maketitle

\begin{titlepage}

\begin{center}


% Upper part of the page 

%\includegraphics[width=0.3\textwidth]{logo-SDSL.png}\\[1cm]

\textsc{\LARGE SDSL PLUGIN}\\[0.5cm]

\vfill 
% Title
\HRule \\[0.4cm]
{ \huge \bfseries D4. State of Art}\\[0.4cm]

\HRule \\[1.5cm]

% Author and supervisor

\begin{flushleft} \large
\emph{Version:} \textsc{1.0}
\end{flushleft}

\begin{flushleft} \large
\emph{Printed on:} \textsc{28.11.2010}
\end{flushleft}

\begin{flushleft} \large
\end{flushleft}
\vfill
% Bottom of the page
{\large West University of Timi'soara \\ 2010}

\end{center}

\end{titlepage}

\newpage

\tableofcontents

\chapter{Abstract}
\paragraph{}

\chapter{Limbajul SDSL}
\section{Definire}
\paragraph{}
Vocabularul reprezintă totalitatea
cuvintelor dintr-un limbaj. Totalitatea cuvintelor ce pot fi folosite în definirea scenariilor: numele persoanelor: orice cuvinte formate din caractere alfanumerice; acţiuni; comenzi pentru definirea contextului, comenzi pentru modificarea vremii, 'incăperi, aparate, obiecte statice, modul spălării, setări, intesitatea. 
\paragraph{}
Pentru definirea contextului (definirea persoanelor şi a încăperilor) se vor folosi
intrucţiuni de forma:
\begin{itemize}
\item Creaza X. - unde X nume de persoană
\item Creaza pereteX (X1,Y1) (X2, Y2) - pereteX este identificatorul peretelui iar
x1,y1,x2,z2 coordonatele peretelui
\item Creaza X perete1 perete2 perete3 perete4 – unde X reprezintă numele încăperii iar
perete1, perete2, perete3 şi perete 4 reprezintă identificatorii pereţilor care
împremuiesc încăperea
\item Creaza usaX (X1,Y1) (X2, Y2) - unde usaX este identificatorul uşii respectiv
x1,y1,x2,z2 coordonatele uşii
\item Creaza geamX (X1,Y1) (X2, Y2) - unde geamX este identificatorul geamului
respectiv x1,y1,x2,z2 coordonatele geamului
\item Adauga obiect in incapere X.
\end{itemize}

\section{Compilare}
\paragraph{}
În prima fază, programul va prelua scenariul scris de utilizator din editorul de
text şi îl va transcrie într-un fişier „scenariu.txt” ce va fi compilat. În urma compilării
vor rezulta două fişiere:
\begin{itemize}
 \item „errorlog.txt”: acest fişier conţine eventualele erori gramaticale sau sintactice
existente în scenariu. În cazul în care scenariul este corect, acest fişier este
gol
 \item „auxiliar.txt”: acest fişier conţine scenariul compilat. Acest lucru înseamnă că
toate prepoziţiile ce nu sunt relevante vor fi eliminate atunci când scenariul
este retranscris în acest fişier. De asemenea, ordinea cuvintelor este
schimbată. Astfel, fiecare linie din fişierul auxiliar va conţine următoarele
  \begin{itemize}
    \item Predicatul, adică acţiunea
	\item Subiectul, adică locuitorul ce execută acţiunea
    \item Atributul, dacă este cazul
    \item Complementul de timp ce indică începutul acţiunii
    \item Complementul de timp ce indică sfârşitul acţiunii, dacă este cazul
  \end{itemize}
\end{itemize}
\paragraph{}
De exemplu, acţiunea din scenariu „Vlad spală mâini de la ora 07:00:00 la
ora 07:02:00” va fi retranscris în fişierul compilat sub următoarea formă: „spală
Vlad mâini 07:00:00 07:02:00”
\paragraph{}
n cazul în care există scenariul este greşit, fişierul „errorlog.txt” va conţine
tipul fiecărei erori şi linia pe care se află eroare respectivă în cadrul scenariul.
Erorile se pot referi la erori sintactice sau erori lexicale. Erorile sintactice de tipul
SyntaxErrorException se referă la locul cuvintelor din cadrul unei propoziţii din
scenariu. Această eroare se referă la cazurile în care utilizatorul a inversat locul
cuvintelor dintr-o propoziţie a scenariului sau cazul în care a uitat să scrie unul sau
mai multe cuvinte. Erorile lexicale sunt de tipul LexicalException. Această exepţie
semnalează faptul că utilizatorul a scris greşit cuvântul respectiv. Totalitatea
cuvintelor din vocabularul limbajului SDSL au fost împărţite într-un mod logic într-o
mulţime de fişiere. Fişier fişier conţine o anumită categorie de cuvinte. De exemplu,
fişierul „acţiuni.txt” conţine totalitatea acţiunilor ce pot fi executate de un locuitor,
adică „se trezeste”, „se culca”, „merge”, „pleaca”, „vine”, „mananca”, „bea”,
„gateste”, „merge la WC”, „spala”, „porneste”, „opreste”, „foloseste”, „seteaza”.
\paragraph{}
După transcrierea scenariului din editorul de text în fişierul „scenariul.txt”
începe procesul de compilare. Acesta se poate împărţi în următoarele faze:
\begin{itemize}
  \item Clasa Reader citeşte fişierul „scenariu.txt” şi cează o listă. Această listă conţine pe fiecare poziţie o linie din scenariul introdus.
  \item Analiza lexical'a
  \begin{itemize}
    \item clasa Analyzer va parcurge lista de linii. Pentru fiecare linie se va
apela metoda splitLine(). Acestă metodă va returna o altă listă de şiruri, ce reprezintă cuvintele.
    \item Pentru lista de cuvinte creată se va apela metoda verifyBelonging().
Această metodă verifică dacă cuvintele se găsesc în vocabular.
    \item Dacă toate cuvintele se găsesc în vocabular, metoda va returna true,
în caz contrar se aruncă o excepţie de tipul WordNotFoundException.
  \end{itemize}
  \item Analiza sintactică
	\begin{itemize}
    \item În cazul în care linia a trecut de analiza lexicală, şirul de cuvinte va fi
transmis ca parametru funcţiei matchPattern din cadrul clasei
SintacticAnalysis care va verifica, prin parcurgerea unui arbore care
reţine gramatica limbajului, dacă propoziţia se potriveşte unuia dintre
şabloane.
    \item În cazul în care linia se potriveşte unuia dintre şabloane se va trece
la linia următoare din scenariu. În caz contrar va fi aruncată o
excepţie de tipul SyntaxErrorException.

  	\end{itemize}
\end{itemize}
\paragraph{}
Analiza sintactică verifică ordinea cuvintelor dintr-o
propoziţie. Pentru a putea realiza acest lucru, a fost necesară transformarea
gramaticii limbajului SDSL într-un arbore.
%\begin{figure}
% \centering
% \includegraphics[height=6 cm]{Untitled.png}
% % 47893612.jpg: 1600x1200 pixel, 72dpi, 56.44x42.33 cm, bb=
% \label{fig:arbore}
%\end{figure}
\paragraph{}
Fiecare regulă din gramatica SDSL reprezintă un drum în arbore, iar fiecare
simbol al regulii reprezintă un nod. Fiecare nod din arbore are asociată o prioritate
ce poate lua următoarele valori:
\begin{itemize}
 \item 0=nodul este un simbol terminal
 \item 1=nodul nu este un simbol terminal
 \item 2=nodul poate să fie sau nu un simbol terminal

\end{itemize}
\chapter{Senzori}
\paragraph{}
Printr-un profil se înţelege un set de valori care are o anumită frecvenţă. Cu ajutorul
profilelor senzorilor, am putut realiza mai uşor comunicarea cu senzorii din casă, în sensul
că am ştiut exact care senzor trebuie să emită semnale la apariţia unei anumite acţiuni.
\paragraph{Senzori de miscare }
Profilul senzorului de mişcare se aplică următoarelor acţiuni: se trezeşte, se culcă, pleacă, vine, mănâncă, bea, găteşte, merge la WC, porneşte, opreşte, foloseşte, setează, spală, merge.
\paragraph{Senzori de curent }
Profilul senzorului de curent se aplică următoarelor acţiuni: porneşte, foloseşte, setează, spală (haine).
\paragraph{Senzori de apa }
Profilul senzorului de apă se aplică următoarelor acţiuni: bea, merge la WC, foloseşte (maşina de spălat), spală.
\paragraph{Senzori de gaz }
Profilul senzorului de gaz se aplică următoarei acţiuni: găteşte.
\paragraph{Senzori de caldura }
Profilul senzorului de temperatură se aplică următoarelor acţiuni: porneşte (aer condiţionat), setează (aer condiţionat).

\chapter{Automatizarea scenariilor}
\section{Definirea scenariilor}
\paragraph{}
Conceptul de ambient inteligent (AmI) oferă o viziune asupra societăţii
informaţionale în care accentul se pune pe o mai mare uşurinţă de folosire, pe un suport de
servicii mai eficient, pe responsabilizarea utilizatorului şi pe suportul pentru interacţiuni
umane.
\paragraph{}
Oamenii sunt înconjuraţi de interfeţe intuitive inteligente care sunt încorporate în tot
felul de obiecte şi de un mediu care este capabil de a recunoaşte şi a răspunde la prezenţa
persoanelor fizice diferite într-un mod discret şi adesea invizibil.
\section{Resurse}
\paragraph{}
Printr-o resursă se înţelege o entitate în cantitate limitată care trebuie consumată
pentru a se obţine un beneficiu din aceasta.
\paragraph{}
Definirea scenariilor implică folosirea unui anumit număr de resurse, în funcţie de
acţiunile care au loc. În acest sens voi evidenţia pentru fiecare acţiune definită în vocabular
resursele care se folosesc în realizarea acesteia.
\section{Generarea automata de scenarii}
\paragraph{}
Generarea automată a unor scenarii ar presupune ca pornind de la un astfel de profil
rezidenţial sau de comportament să se genereze un număr mare de scenarii care să
corespundă acestui profil. 


\chapter{Profile Reziden'tiale}
\section{Locuinta}
\paragraph{}
Componetea de bază a casei sunt pereţii. După ce aceştia sunt definiţi prin un
identificator şi coordonatele a două puncte în plan, se poate trece la crearea încăperilor.
Creara unei încăperi va presupune specificarea numelui/tipului încăperii, respectiv a
identificatorilor celor 4 pereţi care o împrejumuiesc. Identificatorii acestor patru pereţi vor
fi reţiunuţi sub forma unui tablou în cadrul clasei încăpere. Clasa Încăpere va conţine de
asemenea tablouri pentru reţinerea uşilor, geamurilor şi obiectelor asociate unei încăperi.
Pentru a definii uşi şi geamuri se va folosi doar un identificator şi coordonatele a două
puncte, pe baza cărora se va stabili în vectorul de uşi sau geamuri al cărei încăperi se va
adauga identificatorul. La crearea unui obiect (static sau aparat) se va specifica direct
identificatorul încăperii în care va fi adaugat acesta. Astfel va fi foarte uşor de verificat
dacă o încăpere conţine sau nu un anumt obiect. Nu ne interesează în mod deosebit poziţia
exactă a obiectelor în cameră.
\paragraph{}
Fiecărui locuitor i se va asocia, de asemenea, o coordonată care va reprezenta
poziţia lui în casă. Aceste coordonate pot fi încadrate între patru pereţi şi astfel putem afla
cu uşurinţă încăperea în care se află acesta. Coordonatele locuitorului se schimbă în
momentul în care acesta işi schimbă poziţia în casă.
\paragraph{}
Acţiunea de deplasare a personajelor este foarte strâns legată de modelul casei
deoarece ne interesează traseul pe care acesta îl urmează pentru a ajunge dintr-o încăpere în
alta: el poate traversa încăperi intermediare şi nu poate trece prin pereţi. Deplasarea din
încăperea X în încăperea Y se poate fi echivalată cu parcurgerea unui arbore de decizie, în
care încăperea X reprezintă rădăcina, uşile asociate încăperii X sunt drumuri posibile, cu
ajutorul cărora se ajunge în camerele intermediare (noduri intermediare în arborele de
decizie), care au la rândul lor uşi (drumuri posibile). Căutarea continuă până am ajuns în
încăperea destinaţie (nodul final). Pentru reducerea numărului de traversări, în alegerea
drumul ce urmează a fi parcurs putem ţine cont de poziţia încăperii Y : dacă Y se află la
stânga de X, este logic să presupunem că un traseu care porneşte din X spre dreapta nu este
foarte probabil, şi să lasăm parcurgerea acestuia la urmă.
\paragraph{}
Crearea locuinţei din cadrul scenariilor ridică de asemenea problema verificării
corectitudinii instrucţiunilor legate de crearea casei, pentru a ne asigura că datele introduse
sunt corecte din punct de vedere logic, iar corelarea lor corespunde modelului matematic
pentru o casă. Aceasta problemă nu ţine însă de modelul matematic ci de compilator. Se
impun de asemenea modificări majore la interfaţa grafică.
\section{Profile rezidentiale}
\paragraph{}
Profilurile rezidenţiale conţin informaţii privitoare la zona în care este situată casa,
scopul pe care îl deserveşte casa (reşedinţă, casă de vacanţă, etc), etajul pe care se situează
un apartament sau numărul de etaje al unei case, anul şi materialele de construcţie,
suprafaţa casei, înălţimea camerelor, timpul camerelor, tipul sistemului de încălzire, tipul
sistemului de încălzire al apei, sistemul de iluminare, etc. Profilurile de comportament se
referă la informaţii despre: numarul de locuitori ai casei sau apartamentului, date sociale cu
privire la locuitori (şomeri sau angajaţi, elevi, studenţi, etc), aparatele utilizate cel mai des
şi cât de mult sunt folosite acestea.
\paragraph{Exemple}
\begin{itemize}
\item Familie tipică din mediul urban cu 1 copil: locuinţă în mediul urban, bloc,
încălzire centralizată, 3 camere, 3 locuitori, nici o persoană permanent acasă,
program de lucru de zi, calculatorul folosit intre 3 si 6 ore, televizorul folosit
între 3 şi 6 ore 
\item Familie tipică de la ţară, 2 adulţi, 2 copii, 1 pensionar: locuinţă în mediul
rural, casă, încălzire cu lemne, 2 etaje, 4 camere, 1 persoană permanent
acasă, program de lucru de zi, calculatorul folosit între 0 şi 3 ore, televizorul
folosit între 6 şi 9 ore.
\end{itemize}

\end{document}


